import java.util.Random;
public class RandomRedEnvelope extends RedEnvelope { //随机红包
	    double minMoney;       //可以抢到的最小金额
	    int integerRemainMoney;   //红包中的钱按分表示
	    int randomMoney;          //给抢用户的钱
	    Random random;
	    RandomRedEnvelope(double remainMoney, int remainPeople) {
		    random = new Random();
		    minMoney = 0.01;  //minMoney的值是0.01，保证用户至少能抢到0.01圆
		    this.remainMoney = remainMoney;
		    this.remainPeople = remainPeople;
		    integerRemainMoney = (int) (remainMoney * 100); //把钱按分表示
		    if (integerRemainMoney < remainPeople * (int) (minMoney * 100)) {
			    integerRemainMoney = remainPeople * (int) (minMoney * 100);
			    this.remainMoney = (double) integerRemainMoney;
		    }
	    }
	    public double giveMoney() {
		    if (remainPeople <= 0) {
			    return 0;
		    }
		    if (remainPeople == 1) {
			    money = remainMoney;
			    remainPeople--;
			    return money;
		    }
		    randomMoney = random.nextInt(integerRemainMoney);
		    //该金额randomMoney在[0,integerRemainMoney) 区间内	
		    if (randomMoney < (int) (minMoney * 100)) {
	  		    randomMoney = (int) (minMoney * 100);      //保证用户至少能抢到1分
		    }
				
		    int leftOtherPeopleMoney = integerRemainMoney - randomMoney;                                      //leftOtherPeopleMoney是当前用户留给其余人的钱(单位是分)
		    int otherPeopleNeedMoney = (remainPeople - 1) * (int) (minMoney * 100);
		    //otherPeopleNeedMoney是保证其他人还能继续抢的最少金额(单位是分)
				
		    if (leftOtherPeopleMoney < otherPeopleNeedMoney) {
								
			    randomMoney -= (otherPeopleNeedMoney - leftOtherPeopleMoney);
			
		    }
				
		    integerRemainMoney = integerRemainMoney - randomMoney;
				
		    remainMoney = (double) (integerRemainMoney / 100.0); //钱的单位转成圆
								
		    remainPeople--;
								
		    money = (double) (randomMoney / 100.0);
								
		    return money;   //返回用户抢到的钱（单位是圆）
								
	    }
									
}
								

